package com.cxyd.modules.wcs.service;

import com.cxyd.common.service.CrudService;
import com.cxyd.common.utils.ProcResult;
import com.cxyd.modules.api.dto.RcsResultHK;
import com.cxyd.modules.wcs.dto.AgvCancelHkDTO;
import com.cxyd.modules.wcs.dto.AgvTrkHkDTO;
import com.cxyd.modules.wcs.dto.AgvTrkHkPostDTO;
import com.cxyd.modules.wcs.dto.ApplyPassDTO;
import com.cxyd.modules.wcs.entity.AgvTrkHkEntity;
import com.cxyd.modules.wcs.entity.TrkEntity;

import java.util.Map;

public interface AgvTrkHkService extends CrudService<AgvTrkHkEntity, AgvTrkHkDTO> {
    void hkTrkScan(TrkEntity wcsTrk);

    AgvTrkHkPostDTO getPostHkTrk();

    ApplyPassDTO getContinueHkTrk();

    int getAgvTrkCount();

    AgvTrkHkEntity getAgvTrkByTrkId(long id);

    AgvTrkHkEntity getAgvTrkByContNo(String contNo);

    AgvTrkHkEntity getAgvTrkByTaskCode(String taskCode);

    void agvTrkHandle(AgvTrkHkPostDTO dto, RcsResultHK response);

    void agvContinueHandle(ApplyPassDTO dto, RcsResultHK response);

    void updateAgvTrkByContNo(String contNo);

    void updateAgvTrkByTaskCode(String taskCode);

    /**
     * 根据机台的安全信息判断是否给予叉车任务继续
     */
    void updateStatusByPermission();

    ProcResult trkHandler(Map<String, Object> params);

    AgvCancelHkDTO getCancelHkTrk();

    void agvCancelHandle(AgvCancelHkDTO dto, RcsResultHK respond);
}
